﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Workflow.Dto;
using Workflow.Model;

namespace Workflow.IService
{
	public interface ICaseEEMService
	{
		/// <summary>
		/// 所有CaseEEM取得
		/// </summary>
		/// <param name="count">数据总条数</param>
		/// <param name="pageIndex">页号</param>
		/// <param name="pageSize">每页显示数量</param>
		/// <param name="caseQueryDto">查询条件DTO</param>
		/// <param name="orderBy">OrderBy | OrderByDescending</param>
		/// <param name="sort">实体属性名</param>
		/// <returns></returns>
		IList<CaseEEM> GetAllCaseByPage(out long count, int pageIndex, int pageSize, CaseQueryDto caseQueryDto, string orderBy,
		                             string sort);
      IList<CaseEEM> GetCaseByUser(out long count, int pageIndex, int pageSize, CaseQueryDto caseQueryDto,
	                                     string orderBy, string sort);
		/// <summary>
		/// FolderClass根据父亲节点查询子节点
		/// </summary>
		/// <param name="parentCode"></param>
		/// <returns></returns>
		IList<FolerClass> GetFolderClass(string parentCode);

		IList<CaseEEM> GetAllCase(CaseQueryDto caseQueryDto);
		CaseEEM GetGaseById(long id);
		void SaveOrUpdateCase(CaseEEM model);

		/// <summary>
		/// 操作的下一个CaseEEM
		/// </summary>
		/// <param name="caseNo"></param>
		/// <param name="userid"></param>
		/// <returns></returns>
		CaseEEM GetNextGase(long caseNo, long userid, string workStatus);

		IList<EEMCaseMonitorDto> GetCaseMonitor(CaseMonitorQueryDto caseMonitorQueryDto);
		IList<EEMPAMonitorDto> GetPAMonitor(PAMonitorQueryDto caseMonitorQueryDto);
		IList<CycleTimeReportDto> GetCycleTimeReport(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<ReceivedCaseDayReportEEMDto> GetReceivedCaseDayReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<ReceivedCaseDayReportEEMDto> GetReceivedCaseMonthReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<UserWorkloadReportEEMDto> GetUserWorkloadReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<FirstPassYeildReportEEMDto> GetFirstPassYeildReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		void SaveOrUpdateCaseNoLog(CaseEEM model);
		IList<ReasonReportEEMDto> GetReasonReportEEM(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
		IList<BaseDataReportEEMDto> GetBaseDataReportEEM(CaseQueryDto caseQueryDto);
		IList<CycleTimeNewReportDto> GetCycleTimeNewReport(ReceivedCaseDayReportQueryDto ReceivedCaseDayReportQueryDto);
	}
}
